/**
 * 校验器
 * @type {{isNegativeFloat: (function(*=): boolean), isPositiveFloat: (function(*=): boolean), isLowerCase: (function(*=): boolean), isNumber: (function(*=): boolean), isAlphabets: (function(*=): boolean), isURL: (function(*=): boolean), isEmail: (function(*=): boolean), isUpperCase: (function(*=): boolean), isNegativeInteger: (function(*=): boolean), isPositiveInteger: (function(*=): boolean)}}
 */
export const Validator = {
  // uri判断
  isURL: function(textval) {
    const urlregex = /^(https?|ftp):\/\/([a-zA-Z0-9.-]+(:[a-zA-Z0-9.&%$-]+)*@)*((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]?)(\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])){3}|([a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]+\.(com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|[a-zA-Z]{2}))(:[0-9]+)*(\/($|[a-zA-Z0-9.,?'\\+&%$#=~_-]+))*$/
    return urlregex.test(textval)
  },

  // 全部小写判断
  isLowerCase: function(str) {
    const reg = /^[a-z]+$/
    return reg.test(str)
  },

  // 全部大写判断
  isUpperCase: function(str) {
    const reg = /^[A-Z]+$/
    return reg.test(str)
  },

  // 全部都是字母
  isAlphabets: function(str) {
    const reg = /^[A-Za-z]+$/
    return reg.test(str)
  },

  // 邮件格式判断
  isEmail: function(email) {
    const re = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/
    return re.test(email)
  },

  // 数字判断
  isNumber: function(number) {
    return !isNaN(number)
  },

  // 正整数判断 不包含0
  isPositiveInteger: function(number) {
    const re = /^\+?[1-9][0-9]*$/
    return re.test(number)
  },

  // 负整数判断 不包含0
  isNegativeInteger: function(number) {
    const re = /^\-?[1-9][0-9]*$/
    return re.test(number)
  },

  // 正浮点数 包含0
  isPositiveFloat: function(number) {
    const re = /^\d+(\.\d+)?$/
    return re.test(number)
  },

  // 负浮点数 包含0
  isNegativeFloat: function(number) {
    const re = /^((-\d+(\.\d+)?)|(0+(\.0+)?))$/
    return re.test(number)
  }
}
